package com.atguigu.juc.day01.create;

import java.util.concurrent.TimeUnit;

/**
 * 操作方式：
 * 1、通过 Lambda 表达式创建 Runnable 类型的对象：把新线程要执行的操作封装起来
 * 2、把 Runnable 类型的对象传入 Thread 构造器
 * 3、调用 Thread 对象的 start() 方法启动新线程
 * 局限性：
 * 1、run()方法没有返回值，不能返回线程执行结果
 * 2、run()方法没有声明抛出异常，实现方法也不能声明抛出异常，写代码很不方便
 */
public class Demo02Runnable {

    public static void main(String[] args) {

        // 1、通过 Lambda 表达式创建 Runnable 类型的对象：把新线程要执行的操作封装起来
        Runnable runnable = () -> {
            // 每隔 1 秒打印当前线程名称
            while (true) {
                try {
                    TimeUnit.SECONDS.sleep(1);

                    System.out.println(Thread.currentThread().getName() + " is working.");

                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        };

        // 2、创建 Thread 对象
        Thread thread = new Thread(runnable);

        // 3、调用 Thread 对象的 start() 方法启动新线程
        thread.start();

    }

}